Bitbucket Cloud で SSH キーを使用してコミットに署名できるようになりました。
SSH キーを使用してコミットに署名できるようになりました。- アトラシアンのワークライフ
署名付きコミットは、開発者がSSH キーを使用してコントリビューションの信頼性を確認できるようにする、重要な保護レイヤーを提供します。
本ページでは SSH キーを使用した署名付きコミットの設定手順、実際に使用してみた画面などを紹介します。
各人の SSH キーを使用してコミットに署名することができます。下図のように Bitbucket Cloud の Commits 画面で検証結果を確認することが可能です。
SSH キーを使用してコミットに署名する主な理由は、コードの信頼性とセキュリティを向上させるためです。この手法を利用することには、次のような利点があります。
注意
v2.34 以降の git で本機能を使用することができるようです。
古い git を使用している場合は新しい git へ更新してお試しください。
SSH キーがまだあるかどうかわからない場合は、ローカルで既存の SSH キーを確認できます。
既存のSSHキーがあるかどうかを確認するには:
既に登録済みの SSH キーを使用してコミットに署名する場合、次章へ進んでください。
コミットに署名するための新しい SSH キーを生成して追加するには、使用するオペレーティング システムに応じた手順に従います。
または私が作成した記事(How to use SSH key.html)を参照して SSH キーを作成および登録を行います。
NOTE
Bitbucket は認証キー(Authentication key)と署名キー(Signing key)の違いありません。
Github はホームページ上で登録時に 'Key type' として選択します。初期状態は認証キー(Authentication key)になっているので、署名キーを登録する場合は変更する必要があります。
SSH キーを使用してコミットに署名するには、ターミナル (CLI) を使用して次の手順に従います。
下記では "--global" を付与して全ての git を対象とする設定を例に記載しています。リポジトリ毎に設定する場合は "--global" を削除して実施します。
git config --global gpg.format ssh
私の場合は ~/.ssh/bitbucket/id_ed25519.pub を公開鍵として使用しているので下記コマンドを使用します。
git config --global user.signingkey ~/.ssh/bitbucket/id_ed25519.pub
git commit -S -m "your commit message"
-S を毎回つけるのが面倒な場合は、後述の "5. git commit で常に署名するように設定する" を確認してください。
git log --show-signature -1表示例です。
echo "bitbucket@example.com $(cat ~/.ssh/id_ed25519.pub)" > ~/.ssh/allowed_signers git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
ssh-add ~/.ssh/id_ed25519.pub eval $(ssh-agent)
kinoshita@PC-FooBoo:~$ cat .gitconfig [user] name = kinoshita hidetoshi email = ********@********.com signingkey = /home/kinoshita/.ssh/bitbucket/id_ed25519.pub [gpg "ssh"] allowedSignersFile = /home/kinoshita/.ssh/allowed_signers [gpg] format = ssh"--global" を付けずに各リポジトリで設定した場合はリポジトリ内の ".git/config" ファイルに同様の情報が記載されます。
[core] 省略 [remote "origin"] 省略 [branch "main"] 省略 [commit] gpgsign = true [gpg] format = ssh [user] signingkey = /home/kinoshita/.ssh/bitbucket/id_ed25519.pub
git commit 時に “-S“ を付けて実施することは面倒です。一部のツールではこれを補助する仕組みがある様子ですが、常に署名してくれる方が良い場合もありそうです。
署名対象のディレクトリへ移動後、下記コマンドを実行します。
git config commit.gpgsign true
もしくは全てを対象に有効化する場合は ‘--global’ を付けて下記コマンドを実行します。
git config --global commit.gpgsign true
後者のコマンドを実行後の私の .gitconfig ファイル例です。(メールアドレスは **** で変更表記しています)
kinoshita@PC-FooBoo:~$ cat .gitconfig [user] name = kinoshita hidetoshi email = ********@********.com signingkey = /home/kinoshita/.ssh/bitbucket/id_ed25519.pub [gpg "ssh"] allowedSignersFile = /home/kinoshita/.ssh/allowed_signers [gpg] format = ssh [commit] gpgsign = true
以上の設定により git commit に “-S” を付けることなくコミットに対して常に署名するようになります。
以上の設定と署名付きコミットを行ったのち、Bitbucket Cloud へプッシュした Commits 画面を紹介します。「✔」 の表示が追加されました。
「✔」 部分をクリックすると以下の表示を確認できました。
ステータス | 結果 |
---|---|
Verified |
|
Unverified |
|
No Signature |
|
いろいろ記載しましたが、Bitbucket でコミット署名の設定手順を要約すると以下のような感じになります。
個別の内容は適宜変更してください。
1-2 は、既に作成および登録済みの認証鍵を使用する場合は実施不要。
3-5 は、設定を行うリポジトリ内で行います。リポジトリ毎に異なる設定を行えますので、例えば Bitbucket と GitHub 両方を使用している、という人でも安心です。
全部共通で良い、という場合は 3-5 のコマンド実行時に --global オプションを追加します。
逆に --global オプションで設定を行ったうえで、動作条件が異なるリポジトリのみ個別変更という方法もできそうです。
注意
下記2つのメールアドレスが一致している必要があります。
本ページの情報は、特記無い限り下記 MIT ライセンスで提供されます。
2025-05-30 | - | 「7._つまり、設定手順を簡単に説明すると...」を追加 |
2025-03-19 | - | 新規作成 |